/*
 * (C) Copyright 2016 Ymatou (http://www.ymatou.com/).
 * 
 * All rights reserved.
 */
package com.ymatou.iapi.userservice.parameter.enums;

import org.apache.commons.lang.*;

/**
 * 第三方用户类型
 * @author zhongwei
 *
 */
public enum ThirdPartyTypeEnum {

    /**
     * 阿里
     */
    Alipay(3, "Alipay"),

    /**
     * QQ
     */
    QQ(4, "QQ"),

    /**
     * 新浪微博
     */
    Weibo(5, "Weibo"),

    /**
     * 微信
     */
    WeiXin(6, "WeiXin"),
    
    WeiXinHunter(7, "WeiXinHunter"),	//微信公众号-推手专用
    TouTiao(8, "TouTiao"),	//	8	头条（抖音）
    HuoShan(9, "HuoShan"),	//	9	HuoShan
//    TouTiaoHuoShanApp(22, "TouTiaoHuoShanApp"),	//	22
    /**
     * 百度
     */
    Baidu(11, "Baidu"),
    /**
     * 苹果
     */
    Apple(10, "Apple");

    private Integer code;

    private String message;

    ThirdPartyTypeEnum(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public Integer getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    /**
     * 通过代码获取枚举项
     *
     * @param code
     * @return
     */
    public static ThirdPartyTypeEnum getByCode(Integer code) {
        for (ThirdPartyTypeEnum enumItem : ThirdPartyTypeEnum.values()) {
            if (enumItem.getCode() == code) {
                return enumItem;
            }
        }
        return null;
    }

    /**
     *通过枚举值获取枚举项
     * @param msg
     * @return
     */
    public static ThirdPartyTypeEnum getByMessage(String msg) {
        for (ThirdPartyTypeEnum enumItem : ThirdPartyTypeEnum.values()) {
            if (enumItem.getMessage().equalsIgnoreCase(msg)) {
                return enumItem;
            }
        }
        return null;
    }

    /**
     * 使用@JSONCreator来指定构造函数来创建枚举对象
     * @param val
     * @return
     */
    public static ThirdPartyTypeEnum getValue(String val){
        if(StringUtils.isNumeric(val)){
            return getByCode(NumberUtils.stringToInt(val));
        }else{
            return getByMessage(val);
        }
    }
}
